Skip to content

⚡ ci: move Python 3.15 tests off the per-PR critical path (#736) - #738

Merged
ryancheley merged 1 commit into
mainfrom
ci-py315-speedup-736
Jul 9, 2026
Merged

⚡ ci: move Python 3.15 tests off the per-PR critical path (#736)#738
ryancheley merged 1 commit into
mainfrom
ci-py315-speedup-736

Conversation

@ryancheley

Copy link
Copy Markdown
Owner

Closes #736.

Problem

Python 3.15 is a prerelease with no prebuilt native-extension wheels, so tox-uv compiles cryptography/pydantic-core from source. Its per-PR test leg takes ~137s vs ~45s for stable versions — the long pole on every PR, with no added coverage benefit (3.14 already exercises newest-stable behavior).

Change (one file: .github/workflows/ci.yml)

  • Drop 3.15 from the per-PR test matrix → PR gate now tops out at 3.14t (~40–60s).
  • Add a test-py315 job gated on if: github.event_name == 'push' → 3.15 still runs tox -e py315 on every merge to main, preserving early-warning coverage off the critical path.
  • Reversal is one obvious edit (documented inline): add "3.15" back to the matrix and delete test-py315 once cp315 wheels ship upstream.

Why no branch-protection change

The required test check is the summary aggregation job (tests-complete, name: test), not an individual matrix leg — verified via gh api .../branches/main/protection. Removing 3.15 from the matrix leaves the required check intact and reporting.

Verification

  • uvx zizmor .github/workflows/ — clean, no new findings.
  • Full suite green locally (1395 passed, 81 skipped) via pre-commit.
  • YAML validated.
  • Timing wins (SC-001 per-PR, SC-003 on main) confirm once CI runs on this PR and after merge.

Spec Kit

Built via the full Spec Kit workflow (specify → clarify → plan → tasks → analyze → implement); artifacts under specs/002-ci-py315-speedup/. Clarified decision: post-merge on main (no cron, no per-PR build caching).

🤖 Generated with Claude Code

Python 3.15 is a prerelease with no prebuilt native-extension wheels, so
tox-uv compiles cryptography/pydantic-core from source and the job runs
~3x slower (~137s vs ~45s) — the long pole on every PR.

Drop 3.15 from the per-PR test matrix and run it in a dedicated
`test-py315` job on pushes to main instead. 3.14 already covers
newest-stable behavior on every PR; 3.15 breakage still surfaces on each
merge. Reversible in one edit once cp315 wheels ship.

No branch-protection change needed: the required `test` check is the
summary aggregation job, not an individual matrix leg.

Spec Kit artifacts under specs/002-ci-py315-speedup/.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0166iS8CRLfRiyqCBaYtRDaR
@github-actions

github-actions Bot commented Jul 9, 2026

Copy link
Copy Markdown

Profile summary:

GitHub user: ryancheley
🟢 No concerns found with user's profile.
🟢 No concerns found with recent PR activity.
🟢 No concerns found with recent issue activity.

For a more detailed report, run `gh-profiler ryancheley`.

@ryancheley
ryancheley merged commit 0071190 into main Jul 9, 2026
14 checks passed
@ryancheley
ryancheley deleted the ci-py315-speedup-736 branch July 9, 2026 03:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

CI: Python 3.15 test job is ~3x slower (~137s) than other versions (~45s)

1 participant